整数文字量
整数文字量有四种表面形式:十进制
、八进制
、十六进制
和 字符文字量
(A.3节)。十进制文字量用得最多,其形式如你所预期的
7 1234 976 12345601234567890
编译器应该能够对文字量过长,无法表示的情况给出警告。
由 0
开头后跟 x(0x)
的文字量是十六进制(以16作为数的基数),以 0
开头的文字量后面没有 x
的是八进制数(以8为基数)。例如,
decimal: 2 63 83
octal: 0 02 077 0123
hexadecimal: 0x0 0x2 0x3f 0x53
字符a、b、c、d、e、f与其大写形式等价,分别表示10、11、12、13、14、15。八进制和十六进制形式特别适合用于表示二进制位的模式。使用这些记法表示真正的数值则常常会使人感到意外。例如,在一台将 int
表示为16位二补码整数的机器上,0xffff
将是十进制数 -1
。如果表示整数所采用的位数更多,它就会是 65535
。
后缀 U
可以用于显式地写出 unsigned int
型。类似地,后缀 L
可用于显式地写 long
文字量。例如,3是一个 int
型,3U
是一个 unsigned int
型,而 3L
是一个 long int
型。如果没有后缀,编译器就会基于文字量值的大小以及实现中整数的大小,为整数文字量确定一个适当的类型(C.4节)。
限制使用那些意义不明显的常量,只将它们用在给几个 const
(5.4节)或者 枚举量
(4.8节)初始化的表示中,这是一种很好的做法。
🔚